package com.maistars.spider.service.render.handler.impl;

import com.maistars.spider.common.util.HtmlUtil;
import com.maistars.spider.service.render.handler.HtmlHandler;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.Map;

/**
 * @author dhr
 * @date 2021/11/20 下午7:02
 */
public class BaseHrefHtmlHandler extends HtmlHandler {

    public BaseHrefHtmlHandler(Map<String, String> context) {
        super(context);
    }

    @Override
    public void invoke() {
        Document document = Jsoup.parse(context.get("handledHtml"));
        Elements headElements = document.getElementsByTag("head");
        String domainName = HtmlUtil.getDomainNameAndProtocol(context.get("orignalUrl"));

        for (Element element : headElements) {
            Elements childElements = element.children();
            if (childElements.size() != 0) {
                childElements.first().before("<base href='" + domainName + "'/>");
                break;
            }
        }

//        // 替换href是href="/开头的element
//        Elements hrefElements = document.getElementsByAttribute("href");
//        for(Element element : hrefElements){
//            if(element.attr("href").startsWith("//")){
//                continue;
//            }else if(element.attr("href").startsWith("/")){
//                element.attr("href",domainName+element.attr("href"));
//            }
//        }
//
//        // 替换src是src="/开头的element
//        Elements srcElements = document.getElementsByAttribute("src");
//        for(Element element : srcElements){
//            if(element.attr("src").startsWith("//")){
//                continue;
//            }else if(element.attr("src").startsWith("/")){
//                element.attr("src",domainName+element.attr("src"));
//            }
//        }
        context.put("handledHtml",document.html());
    }
}
